Event pop-ups for video selection

ABSTRACT

A computer program product for notifying a viewer of content relevant to the viewer&#39;s interests is provided. A computer identifies an identity of a viewer of a display device, wherein the display device is displaying a first video feed. A computer determines a plurality of preferences of the viewer. A computer retrieves a profile of the viewer, wherein the profile includes the plurality of preferences of the viewer. In response to a determination that a content of a second video feed that is available for viewing on the display device matches at least one of the plurality of preferences of the viewer, a computer generates a notification of the second video feed. In response to receiving an acceptance of the notification, a computer sends a command to the display device to display the second video feed.

BACKGROUND OF THE INVENTION

The present invention relates generally to the field of videodistribution interfaces, and more particularly to display interfaces tofacilitate video program or channel selection.

As more video content is produced, finding something that you will likebecomes a chore. Originally, printed program guides attempted to solvethis problem by listing the content of various broadcast channels thatwill be shown in the near future. More recently, program guides havebecome interactive providing a graphical user interface (GUI) forbrowsing. Additionally, interactive program guides also included whatcontent or programs are currently being broadcasted. However, in bothprinted and interactive guides a user must actively find content withinthe guide to know what is being offered.

SUMMARY

Embodiments of the present invention provide a computer program productto notify a viewer of content relevant to the viewer's interests. Acomputer identifies an identity of a viewer of a display device, whereinthe display device is displaying a first video feed. A computerdetermines a plurality of preferences of the viewer, wherein theplurality of preferences is based, at least in part, on the following:(i) a profile of the viewer on a social network; (ii) one or moremessages posted by the viewer to the social network; (iii) a profile ofa friend of the viewer on the social network; (iv) one or more messagesposted by the friend to the social network; (v) one or more priorviewing habits of the viewer; and (vi) one or more prior responses toprevious notifications. A computer retrieves a profile of the viewer,wherein the profile includes the plurality of preferences of the viewer.In response to a determination that a content of a second video feedthat is available for viewing on the display device matches at least oneof the plurality of preferences of the viewer, a computer generates anotification of the second video feed, wherein: (i) the content of thesecond video feed includes at least one of the following: (i) a genre ofthe second video; (ii) a game being played during the second video;(iii) an actor captured in the second video; or (iv) a sports team orplayer captured in the second video; (ii) the notification indicates anupcoming event in the content of the second video feed that matches atleast one of the plurality of preferences of the viewer; and (iii) thenotification includes the content of the second video feed that matchesthe at least one of the plurality of preferences of the viewer. Inresponse to receiving an acceptance of the notification, a computersends a command to the display device to display the second video feed.

BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS

FIG. 1 is a functional block diagram illustrating a video distributionenvironment, in accordance with an exemplary embodiment of the presentinvention.

FIG. 2 illustrates operational processes of a notification programgenerating a preference profile, on a computing device within theenvironment of FIG. 1, in accordance with an exemplary embodiment of thepresent invention.

FIGS. 3A-3B illustrates operational processes of a notification programdisplaying notifications of content, on a computing device within theenvironment of FIG. 1, in accordance with an exemplary embodiment of thepresent invention.

FIG. 4 depicts an example display of an overlay notification, inaccordance with an exemplary embodiment of the present invention.

FIG. 5 depicts a block diagram of components of the computing deviceexecuting a video distribution program, a video player program, or anotification program, in accordance with an exemplary embodiment of thepresent invention.

DETAILED DESCRIPTION

While solutions to presenting information regarding programming of atelevision broadcast system are known, they are passive and do notnotify a user when relevant content becomes available on a stream orchannel of the television broadcast system. Many set-top boxes includechannel guides to present the content offered, however such solutionsrequire a user to actively search for content they would like to view.Embodiments of the present invention recognize that by collectinginformation regarding a user, a profile can be generated to reflect theinterests of the user. Additionally, information describing contentprovided by the television broadcast system can be determined. When amatch between the broadcasted content and the preferences indicated bythe profile of the user occurs, a notification message is displayed tothe user. By notifying a user when content matching the user'spreferences is currently or will be broadcasted, content matching theinterests can be suggested to the user with minimal effort on part ofthe user.

The present invention may be a system, a method, and/or a computerprogram product. The computer program product may include a computerreadable storage medium (or media) having computer readable programinstructions thereon for causing a processor to carry out aspects of thepresent invention.

The computer readable storage medium can be a tangible device that canretain and store instructions for use by an instruction executiondevice. The computer readable storage medium may be, for example, but isnot limited to, an electronic storage device, a magnetic storage device,an optical storage device, an electromagnetic storage device, asemiconductor storage device, or any suitable combination of theforegoing. A non-exhaustive list of more specific examples of thecomputer readable storage medium includes the following: a portablecomputer diskette, a hard disk, a random access memory (RAM), aread-only memory (ROM), an erasable programmable read-only memory (EPROMor Flash memory), a static random access memory (SRAM), a portablecompact disc read-only memory (CD-ROM), a digital versatile disk (DVD),a memory stick, a floppy disk, a mechanically encoded device such aspunch-cards or raised structures in a groove having instructionsrecorded thereon, and any suitable combination of the foregoing. Acomputer readable storage medium, as used herein, is not to be construedas being transitory signals per se, such as radio waves or other freelypropagating electromagnetic waves, electromagnetic waves propagatingthrough a waveguide or other transmission media (e.g., light pulsespassing through a fiber-optic cable), or electrical signals transmittedthrough a wire.

Computer readable program instructions described herein can bedownloaded to respective computing/processing devices from a computerreadable storage medium or to an external computer or external storagedevice via a network, for example, the Internet, a local area network, awide area network and/or a wireless network. The network may comprisecopper transmission cables, optical transmission fibers, wirelesstransmission, routers, firewalls, switches, gateway computers and/oredge servers. A network adapter card or network interface in eachcomputing/processing device receives computer readable programinstructions from the network and forwards the computer readable programinstructions for storage in a computer readable storage medium withinthe respective computing/processing device.

Computer readable program instructions for carrying out operations ofthe present invention may be assembler instructions,instruction-set-architecture (ISA) instructions, machine instructions,machine dependent instructions, microcode, firmware instructions,state-setting data, or either source code or object code written in anycombination of one or more programming languages, including an objectoriented programming language such as Smalltalk, C++ or the like, andconventional procedural programming languages, such as the “C”programming language or similar programming languages. The computerreadable program instructions may execute entirely on the user'scomputer, partly on the user's computer, as a stand-alone softwarepackage, partly on the user's computer and partly on a remote computeror entirely on the remote computer or server. In the latter scenario,the remote computer may be connected to the user's computer through anytype of network, including a local area network (LAN) or a wide areanetwork (WAN), or the connection may be made to an external computer(for example, through the Internet using an Internet Service Provider).In some embodiments, electronic circuitry including, for example,programmable logic circuitry, field-programmable gate arrays (FPGA), orprogrammable logic arrays (PLA) may execute the computer readableprogram instructions by utilizing state information of the computerreadable program instructions to personalize the electronic circuitry,in order to perform aspects of the present invention.

Aspects of the present invention are described herein with reference toflowchart illustrations and/or block diagrams of methods, apparatus(systems), and computer program products according to embodiments of theinvention. It will be understood that each block of the flowchartillustrations and/or block diagrams, and combinations of blocks in theflowchart illustrations and/or block diagrams, can be implemented bycomputer readable program instructions.

These computer readable program instructions may be provided to aprocessor of a general purpose computer, special purpose computer, orother programmable data processing apparatus to produce a machine, suchthat the instructions, which execute via the processor of the computeror other programmable data processing apparatus, create means forimplementing the functions/acts specified in the flowchart and/or blockdiagram block or blocks. These computer readable program instructionsmay also be stored in a computer readable storage medium that can directa computer, a programmable data processing apparatus, and/or otherdevices to function in a particular manner, such that the computerreadable storage medium having instructions stored therein comprises anarticle of manufacture including instructions which implement aspects ofthe function/act specified in the flowchart and/or block diagram blockor blocks.

The computer readable program instructions may also be loaded onto acomputer, other programmable data processing apparatus, or other deviceto cause a series of operational steps to be performed on the computer,other programmable apparatus or other device to produce a computerimplemented process, such that the instructions which execute on thecomputer, other programmable apparatus, or other device implement thefunctions/acts specified in the flowchart and/or block diagram block orblocks.

The flowchart and block diagrams in the Figures illustrate thearchitecture, functionality, and operation of possible implementationsof systems, methods, and computer program products according to variousembodiments of the present invention. In this regard, each block in theflowchart or block diagrams may represent a module, segment, or portionof instructions, which comprises one or more executable instructions forimplementing the specified logical function(s). In some alternativeimplementations, the functions noted in the block may occur out of theorder noted in the figures. For example, two blocks shown in successionmay, in fact, be executed substantially concurrently, or the blocks maysometimes be executed in the reverse order, depending upon thefunctionality involved. It will also be noted that each block of theblock diagrams and/or flowchart illustration, and combinations of blocksin the block diagrams and/or flowchart illustration, can be implementedby special purpose hardware-based systems that perform the specifiedfunctions or acts or carry out combinations of special purpose hardwareand computer instructions.

The present invention will now be described in detail with reference tothe Figures. FIG. 1 is a functional block diagram illustrating videodistribution environment, generally designated 100, in accordance withone embodiment of the present invention. Video distribution environment100 includes content provider 110 and computing device 120 connectedover network 130. Content provider 110 includes video distributionprogram 112, video data 114 and content data 116. Computing deviceincludes video player program 122, notification program 124 and profiledata 126.

In various embodiments of the present invention, content provider 110and computing device 120 are each a computing device that can be astandalone device, a server, a laptop computer, a tablet computer, anetbook computer, a personal computer (PC), or a desktop computer. Inanother embodiment, content provider 110 or computing device 120 eachrepresent a computing system utilizing clustered computers andcomponents to act as a single pool of seamless resources. In general,content provider 110 and computing device 120 can be any computingdevice or a combination of devices with access to video data 114,content data 116, and profile data 126 and is capable of executing videodistribution program 112, video player program 122, and notificationprogram 124. Content provider 110 and computing device 120 may eachinclude internal and external hardware components, as depicted anddescribed in further detail with respect to FIG. 5.

In this exemplary embodiment, video distribution program 112, video data114 and content data 116 are stored on content provider 110. Videoplayer program 122, notification program 124, and profile data 126 arestored on computing device 120. However, in other embodiments, videodistribution program 112, video data 114, content data 116, video playerprogram 122, notification program 124, and profile data 126 may bestored externally and accessed through a communication network, such asnetwork 130. Network 130 can be, for example, a local area network(LAN), a wide area network (WAN) such as the Internet, or a combinationof the two, and may include wired, wireless, fiber optic or any otherconnection known in the art. In general, network 130 can be anycombination of connections and protocols that will supportcommunications between content provider 110 and computing device 120, inaccordance with a desired embodiment of the present invention.

In various embodiments, content provider 110 includes video distributionprogram 112 that sends video data 114 to one or more users. Video data114 includes one or more prerecorded videos, such as video-on-demand, orlive feeds, such as broadcast channels. Computing device 120 includesvideo player program 122 that receives video data 114 for display to theuser. In some embodiments, computing device 120 is a set-top box orother device connected to a display, such as a television. In otherembodiments, computing device 120 includes a display, such as a smarttelevision (TV) or smartphone. Video player program 122 receives inputfrom a user of computing device 120 to view content of video data 114.For example, a user changes channels or selects a video offered by anon-demand service provided by content provider 110.

As an example scenario of video content distribution, content provider110 is operated by a cable company offering a variety of channels (e.g.,video data 114) to customers. The cable company distributes a feed ofall the channels to the customers. The customers each have a set-top box(e.g., computing device 120) for viewing the channels offered by thecable company. The set-top box receives input from a user to select achannel for viewing. The set-top box filters the feed to select thedesired channel and sends to a video signal of the channel to aconnected television for display. In this example, video data 114 isbroadcasted to computing device 120, with computing device 120determining the content to display. In other scenarios, video data 114may be selectively sent to computing device 120. For example, contentprovider 110 may be an internet protocol television (IPTV) provider orother server sending packets of information containing video data 114.One of ordinary skill in the art will appreciate that any system ofcontent distribution may be used by a provider without deviating fromthe invention. Additionally, while not shown for simplicity, more thanone content provider may be connected to network 130. Video playerprogram 122 of computing device 120 is configured to receive therespective video data 114 of each content provider 110 as discussedherein. In some embodiments, content provider 110 acts as anintermediary for a content producer. For example, a broadcast televisionchannel sends a live broadcast to content provider 110. Content provider110 sends the broadcast to computing device 120. In such embodiments,content provider 110 may not store video data 114 and content data 116locally and receive the data from a content producer for distribution.

In various embodiments, content provider 110 includes content data 116.Content data 116 describes the content of video data 114. For example,content data 116 includes the name of the actors in a movie offered invideo data 114. Additionally, content data 116 may include events thatoccur in video data 114. For example, content data 116 includes a largebattle event in a fantasy television series offered in video data 114.In various embodiments, content data 116 includes, but is not limitedto, metadata describing the content; popularity metrics of the content;and event data of the content, such as the timing and types of eventsthat occur during the content.

Example metadata may include actors in a movie or show; players or teamsin a game; the genre of a movie or show; the type of sport being played;the number of an episode in a season (e.g., season premier or finale);and the time in a season of a game (e.g., opening game or playoffs).Example popularity metrics may include a number of users currentlyviewing or has viewed the content; a user rating of the content; andother editorial scores or reviews from external sources. Example eventdata may include events that occur during the content. For example,event data includes a fight in an action movie along with the combatantsin the fight. As another example, event data includes an event for ahome run and who hit the home run. Additionally, content data 116 mayinclude the timing of said events in the content. For pre-recorded ordelayed content, the timing of the events is included in content data116. For example, the time the fight occurs in the playback of theaction movie. For live or broadcast content, event data may be enteredas a stream with the timing of the event set to when the event wasentered in content data 116. One of ordinary skill in the art willappreciate that any information describing the content of a piece ofvideo data 114 may be used without deviating from the invention. In someembodiments, by providing the events presented in the content of contentprovider 110, users can be notified by notification program 124 ofrelevant events when they will occur either in live content orpre-recorded content.

In some embodiments, a content producer or an administrator of contentprovider 110 provides content data 116 for content supplied to contentprovider 110. For example, the content producer provides metadata abouta piece of pre-recorded content (e.g., actors, the characters the actorsplay and the genre of movie) in addition to events and timing of saidevents that take place in the content (e.g., a romantic moment occursbetween a first character and second character at the thirty-five minutemark in a movie). For live content, a content producer or anadministrator of content provider 110 provides content data 116 forevents as they occur. For example, the current score is updated when ascoring event occur in a sports game. As another example, a player listis updated when a substitution occurs in a sports game. In somescenarios, content data 116 may be included in video data 114 (e.g.,metadata is included in a video stream of video data 114). In someembodiments, notification program 124 retrieves content data 116 as thedata becomes available. In an embodiment, notification program 124retrieves a subset of content data 116. For example, notificationprogram 124 receives preferences from a user, such as particularprograms or channels the user wishes to be prompted with notifications.In response, notification program 124 retrieves only content data 116that match the preferences of the user. As such, only approvednotification types are displayed.

In other embodiments, video distribution program 112 analyzes content invideo data 114 to determine content data 116. For example, videodistribution program 112 performs facial recognition to determine actorsin a movie or players in a game. Additionally, video distributionprogram 112 may perform event-based analysis of a video, which is a typeof image analysis technique, to determine the events contained in saidvideo. Such image analysis techniques are known to those of ordinaryskill in the art. As such, further description of the particularfunctioning and execution of such techniques is not provided in thisdisclosure. For example, video distribution program 112 includesadditional video content describing a plurality of reference videos ofcertain types of events (one clip for a first fight between two peopleand another clip for a dance routine between two people). Videodistribution program 112 compares the reference videos to content invideo data 114. When a match between a reference video and content invideo data 114 is determined, video distribution program 112 generatescontent data using the description of the reference video as a template.Such as, if a dance routine is detected, video distribution program 112creates a dance event and inserts the names of the actors, where theactors are determined based on the facial recognition discussed herein.By automatically determining events and descriptors of the events, suchembodiments provide mechanisms for determining content that has yet tobe identified manually. In another embodiment, video player program 122determines events for one or more pieces of content in received videodata 114. For example, video player program 122 receives input from auser to monitor a channel. While watching other content, video playerprogram 122 automatically determines content for the monitored channelas similarly discussed with regards to video distribution program 112performing event-based analysis to video content.

In various embodiments, computing device 120 includes notificationprogram 124. Notification program 124 determines if relevant content iscurrently available in video data 114 by content provider 110.Notification program 124 retrieves content data 116. When contentmatches preferences or viewing habits for a user, notification program124 displays a message to the user alerting the user to the availabilityof the content. For example, a broadcasted channel is currently playinga soccer game. The user has a preference to a particular player on ateam playing in the match. Content data 116 indicates that during thelive feed the soccer match the user's favorite player was justsubstituted onto the field. By comparing the preferences of the user andthe content of the soccer game, notification program 124 displays amessage indicating the player is now active in the game. The user can bewatching other content on computing device 120 when this occurs (e.g.,video player program 122 is displaying different video data 114 than thesoccer match). In some scenarios, the message generated by notificationprogram 124 includes a prompt to switch video player program 122 to viewvideo data 114 of the soccer game. Notification program 124 receivesconfirmation from the user to change channels. In response, notificationprogram 124 sends a command to video player program 122 to changechannels (e.g., a stream of video data 114 currently playing the soccermatch). In scenarios where timed events are present in a video or stream(e.g., a player substitution), notification program 124 sends anotification prior to the event occurring. In some scenarios, a livestream has a built in delay from the captured event occurring to when itis viewable. Notification program 124 sends the notification earlierthan the delay of the stream to alert the viewer of the upcoming liveevent. In other scenarios, video player program 122 buffers or storesthe incoming live stream when a notification is received. If a useraccepts the notification, video player program 122 starts the video feedat the buffered point such that the viewer can see the live eventdescribed in the notification. In an embodiment, notification program124 sends a notification to another device (not shown), such as aprogram installed on a smartphone of the user, alerting the user of thesoccer match and the event matching the user's preferences.

In various embodiments, computing device 120 includes profile data 126.Profile data 126 includes one or more profiles of users of computingdevice 120. In some embodiments, when a user starts video player program122 to watch video data 114 of a content provider 110, video playerprogram 122 prompts the user to select the corresponding profile of theuser. In other embodiments, computing device 120 provides authenticationmechanisms to determine the user or users of computing device 120. Forexample, computing device 120 includes sensors to detect the identitiesof the users viewing the display of computing device 120. Computingdevice 120 includes a forward facing camera from the display. The camerarecords images of the users viewing the display. Notification program124 determines the identities of the users by performing facialrecognition on the images recorded by the camera, and comparing saidimages from the camera to images of the users stored in the relevantprofiles of profile data 126.

In various embodiments, profile data 126 includes preferences of user ofvideo player program 122. Preferences include information indicatingpreferred content the user wants to receive notifications fromnotification program 124 when relevant video data 114 is accessible byvideo player program 122 (e.g., video data 114 is retrievable fromcontent provider 100 at the current viewing of other video content viavideo player program 122 by the user). Each profile includes preferencessuch as, but not limited to, preferred genres of movies or shows;preferred subjects or topics; preferred game types; preferred shows,networks, channels, or other types of content producers; preferred teamsor players in a team; preferred hometown or location of teams; orpreferred event types or situations (e.g., a fight scene or romanticmoment in a movie). In some embodiments, a profile in profile data 126includes the viewing habits of the user. Viewing habits includesinformation regarding the type of content for video data 114 the useroften views, or other habits or interactions the user has when viewingcontent. Each profile includes viewing habits such as, but not limitedto, the amount of time each type of content is previously viewed by auser (e.g., watches comedies more than dramas); frequency of contentpreviously viewed (e.g., often watched shows or portions of shows, suchas the opening theme song); or frequency of metadata in contentpreviously viewed (e.g., favorite actor in shows watched).

In some embodiments, profile data 126 includes social networkinformation regarding the user such as social networks the user belongsto and the profiles of other friends of the user within the socialnetworks. Notification program 124 retrieves posts made by friends ofthe user to determine if the posts contain information regarding contentoffered in video data 114. For example, notification program 124retrieves posts describing shows or games, or even actors or members ofteams. As the frequency of posts including similar content increase(e.g., more posts describe a certain show), notification program 124 mayinclude messages when the content becomes available in video data 114(e.g., next time the show airs). In some embodiments, profile data 126may include social network information to follow certain other users ofthe social network. A user may follower another member of the socialnetwork because both share similar interests or the other member is moreknowledgeable about content provided by content provider 110. When afollowed user posts information regarding content, notification program124 provides messages to the user when the content mentioned by thefollowed user becomes available. In one embodiment, notification program124 collects the preferences of a user, and other with similar interest,provides messages indicating when content of video data 114 is availablethat matches said preferences. As such, the user is more aware ofcontent that is similar to the interests instead of manually discoveringthe content themselves.

In some embodiments, profile data 126 includes previous responses tonotifications displayed by notification program 124. For example, ifnotification program 124 receives input from a user indicating the userwould like to view the content associated with the notification, thennotification program 124 stores in the profile of the user in profiledata 126 information indicating the approval by the user (e.g., that thenotification was relevant to the user's interests). If notificationprogram 124 receives input from a user indicating the user would notlike to view the content associated with the notification, thennotification program 124 stores in the profile of the user in profiledata 126 information indicating the disapproval by the user (e.g., thenotification was not relevant to the user's interests). In someembodiments, by storing previous responses, notification program 124trains the preferences of profile data 126, for a given user, to matchthe relevant interests of that user.

In an embodiment, profile data 126 includes user-designated preferences.For example, notification program 124 receives input from the user toprovide notifications when certain content is present in video data 114,as discussed herein. A user can provide favorite actors or sports teamsin profile data 126. A user may also provide disliked preferences and inresponse, notification program 124 does not generate notifications forvideo content containing the disliked preferences.

In various embodiments, notification program 124 determines thepreferences, either liked or disliked, for each user based on one ormore of: (i) the user's social network profile or profiles; (ii)profiles of users who are friends with or otherwise connected within thesocial network the user is a member of; (iii) viewing habits or pastinteractions with video player program 122; (iv) previous responses bythe user to notifications generated by notification program 124; and(iv) user-designated preferences. In some embodiments, notificationprogram 124 determines the preferences of a user. In other embodiments,notification program 124 receives the preferences from another programor module (not shown) connected to network 130.

FIG. 2 illustrates operational processes, generally designated 200, ofnotification program 124 generating a preference profile. Notificationprogram 124 generates preferences for profiles of users of computingdevice 120. The preferences for each profile indicate the type ofcontent, and other factors a user associated with the profile, typicallyenjoyed for viewing by the user. In process 202, notification program124 retrieves information from a social network profile from a socialnetwork platform (not shown). For example, notification program 124retrieves one or more of the following from the social network: theuser's age or birth date; the user's current home location; the user'sbirth location or previous places of residence; groups the user follows;and messages posted to the social network made by the user. In somescenarios, notification program 124 generates certain preferences basedon the current location or previous locations the user lived. Forexample, notification program 124 creates a preference for a teamlocated near the user's hometown. In other scenarios, notificationprogram 124 generates certain preferences based on the user's posts orgroups the user follows. For example, notification program 124 analyzesthe content of the user's posts or descriptions of group the userfollows to determine interests of the user. Notification program 124generates preferences based on the determined interests.

In process 204, notification program 124 retrieves the social networkprofiles for friends of the user. Example information retrieved for eachfriend of the user in the social network includes, but is not limitedto, one or more of the following: the friend's age or birth date; thefriend's current home location; the friend's birth location or previousplaces of residence; groups the friend follows; and messages posted tothe social network made by the friend. In some scenarios, notificationprogram 124 aggregates the information gathered from each friend'sprofile to determine any trends or common interests among the friends ofthe user. For example, if a certain percentage of friends are currentlyliving in a location, then notification program 124 determines thelocation is of interest to the user and generates preferences for videocontent about the area (e.g., news reports of the location or sportsteams from the location). In other scenarios, notification program 124generates certain preferences based on the posts made by friends of theuser. Notification program 124 analyzes the content of the friends'posts to determine common topics among the various posts. If the numberof posts from friends of a user about a topic exceed a threshold valueor percentage, then notification program 124 generates preferences basedon the topic. For example, if over three-fourths of the friends for auser post social network messages about a show, then notificationprogram 124 generates a preference for the show for the user.

In process 206, notification program 124 retrieves the viewing habits ofthe user from profile data 126. As a user views video data 114 fromcontent provider 110, notification program 124 stores respective contentdata 116 regarding the video data 114 when viewed by the user via videoplayer program 122. In some scenarios, notification program 124 storescontent data 116 in a user's profile describing the content of the videobeing displayed (e.g., metadata of the content such as, genre and actorsin a movie or teams and game being played). In other scenarios,notification program 124 stores the length of time a respective videodata 114 or type of content data 116 has been viewed by the user. Forexample, notification program 124 stores how long a particular piece ofvideo content has been viewed. In another scenario, notification program124 stores how long a type of content has been viewed by the user (e.g.,a user has watched a cumulative of twenty hours of comedies or twohundred hours of movies with an particular actor). In some embodiments,notification program 124 represents viewing habits as a distribution ofweights among one or more types of content data 116. For example, a userhas one-hundred hours of time viewing various different videos via videoplayer program 122 and twenty hours are spent watching sports games,thirty hours watching comedies, and fifty hours watching mysteries.Notification program 124 assigns respective weights of 20% to sports,30% to comedies, and 50% to mysteries. In some embodiments, profile data126 includes a record of all viewing habits of a user. In otherembodiments, profile data 126 includes a pre-determined record ofviewing habits of the user (e.g., the last three months of viewinghabits).

In process 208, notification program 124 retrieves previous responses ofthe user to prior notifications displayed by notification program 124.When notification program 124 displays a notification to a user,notification program 124 stores the response from the user to thenotification. Furthermore, notification program 124 stores the contentdata 116 of the respective video data 114 indicated in the notification.Notification program 124 stores an indication of whether the useraccepts or rejects the notification. If a user accepts a notification tochange the displayed video data 114, then notification program 124stores the content data 116 of the suggested video data 114. If a userrejects a notification to change the displayed video data 114, thennotification program 124 stores the content data 116 of the suggestedvideo data 114 that was rejected. In some scenarios, acceptednotifications increase a score associated with the preferences stored inprofile data 126 for a user for the types of content data 116 of thesuggested video data 114 that was accepted by the user. Rejectednotifications decrease a score associated with the preferences stored inprofile data 126 for a user for the types of content data 116 of thesuggested video data 114 that was rejected by the user.

In process 210, notification program 124 updates preferences for theuser viewing video data 114 on video player program 122. Notificationprogram 124 retrieves social network information (process 202 and 204),viewing habits (process 206) and previous notification responses(process 208) to update preferences for a user. In some embodiments,notification program 124 performs processes 202, 204, 206 and 208 atcertain intervals (e.g., daily) or events (e.g., when a user beginsviewing video data 114). In other embodiments, notification program 124performs processes 202, 204, 206 and 208 independently and at differenttimes or events. For example, notification program 124 retrieves socialnetwork information (processes 202 and 204) when new information isavailable (e.g., a new message is posted by the user). In someembodiments, notification program 124 updates preferences for the userviewing video data 114 when new information is retrieved in one or moreof processes 202, 204, 206 or 208. For example, new viewing habits havebeen stored in profile data 126, but social network information remainsthe same. In such embodiments, notification program 124 updatespreferences for a user when relevant profile data 126 (e.g., the profileof the user) is updated. In various embodiments, profile data 126includes preferences for a user. Preference indicate types of content,determined by notification program 124, that the user is predicted toenjoy. In some embodiments, preferences include a list of content theuser would enjoy, such as favorite actors, teams, genres and the like.If video data 114 is currently available with one or more of thepreferences of the user, then notification program 124 generates anotification indicating the availability for the particular video data114. In other embodiments, preferences include a score for each type ofcontent. In some scenarios, the higher the score indicates a higherpreference by the user for that type of content.

FIGS. 3A-3B illustrates operational processes, generally designated 300,of notification program 124 displaying notifications of content. Inprocess 302, notification program 124 identifies the identity of theuser of video player program 122. In some embodiments, video playerprogram 122 receives authentication information (e.g., a username andpassword) to access video data 114. Notification program 124 receivesthe authentication information from video player program 122. Based onthe authentication information, notification program 124 determines therespective profile in profile data 126. In other embodiments, computingdevice 120 includes one or more sensors for detecting the identity ofthe user. For example, computing device 120 includes a camera.Notification program 124 receives images of users of computing device120. Profile data 126 includes a face image profile for each user. Assuch, notification program 124 compares received images from the camerato the images associated with each profile to identify the user of videoplayer program 122. In an embodiment, notification program 124identifies more than one user of video player program 122. For example,computing device 120 is a smart TV with a camera. Notification program124 receives one or more images including all current users viewing thesmart TV. For each users included in the one or more images,notification program 124 identifies the identities of each user.

In process 304, notification program 124 retrieves the profile of theidentified user from profile data 126. In various embodiments,notification program 124 retrieves the viewing preferences of the userassociated with the profile. In process 306, video player program 122displays a video or stream from video data 114. As a user watches avideo of stream on computing device 120, notification program 124compares the retrieved viewing preferences of the user to content data116 of other videos or streams currently available for viewing in videodata 114 (process 310). While a user views a video or stream of videodata 114, video player program 122 may receive a variety of commandsfrom the user to control the video data 114 displayed by video playerprogram 122. For example, computing device 120 is a smart TV. Videoplayer program 122 receives an input command from the user to change thecurrent stream of video data 114 to another stream (e.g., changechannels). As another example, video player program 122 receives aninput command from the user to change the current video (e.g., anon-demand video of content provider 110) of video data 114 to a livestream of video in video data 114. One of ordinary skill will appreciatethat a notification displayed by notification program 124 can occur atany state or mode of operation of video player program 122.

In determination process 308, video player program 122 determines if acommand is received to stop viewing of video data 114. If a stop commandis received (YES branch of determination process 308), then video playerprogram 122 stops the display of video data 114. If not stop command isreceived (NO branch of determination process 308), then video playerprogram 122 continues operation awaiting either commands from the user(e.g., as discussed herein with regards to process 306) or fromnotification program 124 (e.g., as discussed herein with regards toprocess 320). In some embodiments, video player program 122 is currentlynot operating (e.g., is not currently displaying video data 114). Insuch embodiments, notification program 124 provides notifications toother devices (not shown) or programs (not shown) of computing device120. For example, notification program 124 sends a notification to asmartphone via a text message when a notification of relevant content tothe viewing preferences of the user is currently available in video data114 of content provider 110.

In process 310, notification program 124 compares the viewingpreferences of the user to content data 116 of available video data 114of content provider 110. Viewing preferences include various topics,situations, or other descriptors that a user finds interesting. In someembodiments, notification program 124 determines viewing preferences ofthe users based on social network information, viewing habits, andprevious responses to notifications generated by notification program124. In other embodiments, notification program 124 receivesuser-designated preferences from the user. In various embodiments,notification program 124 determines if any the respective content data116 of available video data 114 matches the viewing preferences of theuser (determination process 312). If content data 116 of a video orstream of video data 114 matches one or more preferences of the user(YES branch of determination process 312), then notification program 124displays a notification to the user (process 314). In no content data116 of the available video data 114 matches the preferences of a user(NO branch of process determination 312), then video player program 122continues displaying the selected video data 114 (process 306) andnotification program 124 continues comparing content data 116 ofavailable video data 114 until either a stop command is received (YESbranch of determination process 308) or a notification is displayed(process 314).

In process 314, notification program 124 displays a notification to theuser. The notification includes a message describing the contentmatching the user's preferences and, in some embodiments, other contentdata 116 of the matching video or stream of video data 114. For example,a user has a preference for ‘Actor A’. Notification program 124determines that a movie, titled ‘Movie X’, has become available forviewing on a ‘Channel Y’ with ‘Actor A’ in the cast. An examplenotification message states “‘Actor A’ is starring in ‘Movie X’ on‘Channel Y’”. ‘Actor A’ is included due to the matching of viewingpreferences. The other content data 116 is included to provide contextfor the notification. In some embodiments, the notification includesinterface elements for accepting the notification. When a notificationis accepted, notification program 124 sends an instruction to videoplayer program 122 to change the displayed video data 114 to the videoor stream indicated in the notification (process 320). The notificationmay also include an interface element for rejecting the notification. Ifthe user selects the interface element for rejecting the notification,then notification program 124 does not send an instruction to videoplayer program 122, with video player program 122 continuing to displaythe currently selected video or stream by the user.

In process 316, notification program 124 stores the response by the userto the interface elements for accepting or rejecting a notification inthe profile of the user of profile data 126. By storing previousresponses, notification program 122 trains the preferences of the userstored in profile data 126 to provide more relevant notifications to theuser in the future. For example, a preference for a sports team ispresent in a profile of a user. At a later time, a game featuring theteam becomes available for viewing in video data 114. Notificationprogram 124 display a notification alerting the user of the availabilityof the game for viewing. The user selects the rejection interfaceelement indicating they do not wish to view the game. Notificationprogram 124 stores the response and adjusts the preferences of the userbased on the response. In one scenario, the team is no longer consider apreference of the user after the rejection of the notification. Inanother scenario, more than one rejection is received before removingthe preference for the team. Such scenarios may occur when more than onepreference matches content data 116 of a video or stream. In anembodiment, notification program 124 stores a neutral response to anotification program. For example, the displayed notification may bedisplayed for only a few seconds. If the user does not respond withinthe time frame of display for the notification, then notificationprogram 124 stores an indication that the response was neutral (neitheraccepting nor rejecting the notification).

In determination process 318, notification program 124 determines if thereceived response accepts the notification. If the received responseaccepts the notification (YES branch of determination process 318), thennotification program 124 sends a command to video player program 122 tobegin displaying the video or stream associated with the acceptednotification (process 320). In response to the receiving the command,video player program 122 changes the displayed displays video or streamassociated with the notification (process 306), until a new command isreceived from the user or a separate notification is accepted by theuser for a different video or stream. If the received response rejectsthe notification (NO branch of determination process 318), thennotification does not send a command to video player program 122, withvideo player program 122 continuing to display the currently viewedvideo or stream.

FIG. 4 depicts an example display, 400, of overlay notification 420. Asa user selects and views videos or streams from video data 114 ofcontent provider 110, video player program 122 displays the selectedvideo or stream as video feed 410. During the course of viewing theselected video or stream, notification program 124 compares thepreferences of the user to content data 116 corresponding to video data114 that is not selected for display in video feed 410. For example, auser is viewing a live stream of video data 114 for a television channelon a smart TV. As such, notification program 124 compares content data116 for video data 114 of other live streams of video provided bydifferent channels of content provider 110.

In various embodiments, when notification program 124 determines that amatch between the user's preferences and content data 116 of video orstreams currently available but not being viewed in video feed 410occurs, notification program 124 generates a notification indicating theavailable video or stream that matches the user's preferences. In someembodiments, notification program 124 displays the notification asoverlay notification 420. Notification program 124 generates aninterface element displayed over video feed 410. In other embodiments,notification program 124 sends an instruction or command to video playerprogram 122 to display a notification. In another embodiment,notification program 124 sends an instruction or command to anotherdevice, such as a smartphone of the user, to display a notification.

In various embodiments, overlay notification 420 includes notificationmessage 422, acceptance interface element 424 a and rejection interfaceelement 424 b. Notification message 422 includes a description ofcontent data 116 for a currently available video or stream notificationprogram 124 suggests for viewing by the user. In some scenarios, themessage includes portions of content data 116 of the suggested video orstream that matches the preferences of the user (e.g., the user preferscontent with an actor, therefore the message includes the actor's name).In other scenarios, the message includes portions of content data 116that did not match the preferences of the user but provide context(e.g., the movie the actor appears in is not a preference of the user,but provides context to the content being suggested). In variousembodiments, overlay notification 420 includes acceptance interfaceelement 424 a and rejection interface element 424 b to received inputfrom the user regarding the user's acceptance or rejection of thenotification. When acceptance interface element 424 a is selected,notification program 124 sends a command to video player program 122 tochange video feed 410 to the video data 114 associated with thenotification. When acceptance interface element 424 a is selected, thenotification is dismissed and video player program 122 continues todisplay the current video feed 410.

FIG. 5 depicts a block diagram, 500, of components for each of contentprovider 110 and computing device 120, in accordance with anillustrative embodiment of the present invention. It should beappreciated that FIG. 5 provides only an illustration of oneimplementation and does not imply any limitations with regard to theenvironments in which different embodiments may be implemented. Manymodifications to the depicted environment may be made.

Content provider 110 and computing device 120 each includecommunications fabric 502, which provides communications betweencomputer processor(s) 504, memory 506, persistent storage 508,communications unit 510, and input/output (I/O) interface(s) 512.Communications fabric 502 can be implemented with any architecturedesigned for passing data and/or control information between processors(such as microprocessors, communications and network processors, etc.),system memory, peripheral devices, and any other hardware componentswithin a system. For example, communications fabric 502 can beimplemented with one or more buses.

Memory 506 and persistent storage 508 are computer-readable storagemedia. In this embodiment, memory 506 includes random access memory(RAM) 514 and cache memory 516. In general, memory 506 can include anysuitable volatile or non-volatile computer-readable storage media.

Video distribution program 112, video data 114, content data 116, videoplayer program 122, notification program 124, and profile data 126 arestored in persistent storage 508 for execution and/or access by one ormore of the respective computer processors 504 via one or more memoriesof memory 506. In this embodiment, persistent storage 508 includes amagnetic hard disk drive. Alternatively, or in addition to a magnetichard disk drive, persistent storage 508 can include a solid state harddrive, a semiconductor storage device, read-only memory (ROM), erasableprogrammable read-only memory (EPROM), flash memory, or any othercomputer-readable storage media that is capable of storing programinstructions or digital information.

The media used by persistent storage 508 may also be removable. Forexample, a removable hard drive may be used for persistent storage 508.Other examples include optical and magnetic disks, thumb drives, andsmart cards that are inserted into a drive for transfer onto anothercomputer-readable storage medium that is also part of persistent storage508.

Communications unit 510, in these examples, provides for communicationswith other data processing systems or devices, including resources ofnetwork 130. In these examples, communications unit 510 includes one ormore network interface cards.

Communications unit 510 may provide communications through the use ofeither or both physical and wireless communications links. Videodistribution program 112, video data 114, content data 116, video playerprogram 122, notification program 124, and profile data 126 may bedownloaded to persistent storage 508 through communications unit 510.

I/O interface(s) 512 allows for input and output of data with otherdevices that may be connected to one or both of content provider 110 orcomputing device 120. For example, I/O interface 512 may provide aconnection to external devices 518 such as a keyboard, keypad, a touchscreen, and/or some other suitable input device. External devices 518can also include portable computer-readable storage media such as, forexample, thumb drives, portable optical or magnetic disks, and memorycards. Software and data used to practice embodiments of the presentinvention, e.g., video distribution program 112, video data 114, contentdata 116, video player program 122, notification program 124, andprofile data 126, can be stored on such portable computer-readablestorage media and can be loaded onto persistent storage 508 via I/Ointerface(s) 512. I/O interface(s) 512 also connect to a display 520.

Display 520 provides a mechanism to display data to a user and may be,for example, a computer monitor, or a television screen.

The programs described herein are identified based upon the applicationfor which they are implemented in a specific embodiment of theinvention. However, it should be appreciated that any particular programnomenclature herein is used merely for convenience, and thus theinvention should not be limited to use solely in any specificapplication identified and/or implied by such nomenclature.

It is to be noted that the term(s) “Smalltalk” and the like may besubject to trademark rights in various jurisdictions throughout theworld and are used here only in reference to the products or servicesproperly denominated by the marks to the extent that such trademarkrights may exist.

What is claimed is:
 1. A computer program product comprising: one ormore computer-readable storage media and program instructions stored onthe one or more computer-readable storage media, the programinstructions comprising: program instructions to receive an image of aviewer of a display device; program instructions to identify an identityof the viewer of the display device based, at least in part, on theimage of the viewer, wherein the display device is displaying a firstvideo feed; program instructions to determine a plurality of preferencesof the viewer, wherein the plurality of preferences is based, at leastin part, on the following: (i) a profile of the viewer on a socialnetwork; (ii) one or more messages posted by the viewer to the socialnetwork; (iii) a profile of a friend of the viewer on the socialnetwork; (iv) one or more messages posted by the friend to the socialnetwork; (v) one or more prior viewing habits of the viewer; and (vi)one or more prior responses to previous notifications; programinstructions to retrieve a profile of the viewer, wherein the profileincludes the plurality of preferences of the viewer; programinstructions to determine a content of a second video feed based, atleast in part, on at least one image of the second video feed; inresponse to a determination that the content of the second video feedthat is available for viewing on the display device matches at least oneof the plurality of preferences of the viewer, program instructions togenerate a notification of the second video feed, wherein: (i) thenotification indicates an upcoming event in the content of the secondvideo feed that matches at least one of the plurality of preferences ofthe viewer; and (ii) the notification includes the content of the secondvideo feed that matches the at least one of the plurality of preferencesof the viewer; and in response to receiving an acceptance of thenotification, program instructions to send a command to the displaydevice to display the second video feed.